package tg.model;

/**
 * 游戏定义
 *   这里的定义是包括 
 *       游戏的定义
 *       玩法的定义
 *       结果的定义(游戏结果和玩法结果也是统一的)
 *   游戏、玩法、结果  这三者定义时不绑定，在实例时才会绑定
 *   比如 ：
 *       创建一个游戏实例，必须指定 游戏结果(结果绑定游戏)
 *       创建玩法实例，必须指定  玩法结果（也是游戏结果，绑定玩法），玩法必须绑定游戏（玩法是为游戏创建的）
 *  
 *   org.tg.gamedefine.game   --所有的游戏定义类
 *   org.tg.gamedefine.gameresult --所有的结果定义类
 *   org.tg.gamedefine.gp     --所有的玩法定义类
 *   org.tg.gamedefine.gpresult--所有的玩法结果定义类
 *   
 *   初始化时，先加载这些定义类，执行它们的插入到数据库中，这样用户才可以创建游戏
 *   然后再读取数据库中的游戏实例，每个游戏实例再初始化：
 *       读取本游戏的所有玩法，再初始化
 *          加载游戏期数
 *             加载当前期的游戏信息和下注信息
 *  
 * 定义的这些表的数据，应该要通过，实体类运行时，自动插入到数据库，相当于，我实现了一个游戏逻辑，就把这个游戏定义好插入数据库，就可供用户来新增本类型的游戏了
 * 这个表是不让用户编辑的
 *    在用户创建游戏实例时，再来决定它的树形结构节点，这个游戏实例列表只做最后的节点，树应该是在另一张表，可以多种树形结构都可以，最后叶子再绑定游戏实例id
 * @author T410 
 * 主要是游戏 绑定 实体类，并且规定游戏的全局参数让用户配置
 * 可以让写好的游戏定义基础类自己创建游戏定义记录，自己插到这里来，不需要人工:判断不存在就插入
 * 创建一个游戏
 *    游戏id，
 *    游戏名称
 *    游戏类型
 *    游戏说明
 *    游戏原始类绑定
 *    游戏类初始化参数定义（这些参数跟玩法什么的参数都一样，都是自己定义的一些参数，让新增的人员来设定、修改，做为游戏运行时参数）
 *       这里定义游戏参数（最好有默认值），在新增游戏实例时，就可以让用户填这些参数值,游戏实例记住这些值，以后可以随时修改
 *    	 例： 真人游戏中的 下注时间（秒数）可以有个默认值40秒
 *    
 * 只有代码有实现的玩法，才在这里插入玩法定义，比如实现了 一种单双玩法逻辑，然后在这里插一条记录，然后在创建游戏->创建玩法中就可以找到这个玩法了
 *   在创建玩法时，要用这里的param_define 来给玩法实例 创建实例参数
 * 当代码中写好一个玩法规则类时，要在这里的新增界面来操作，创建玩法逻辑，输入  名称，绑定的类， 然后新增一个个玩法参数，最后网页把这些参数组织成json做为一个param_define的字段
 * 新增参数时，选择类型 1数字，2字符串，3枚举时，下面的具体不一样的参数才显示出来，让用户一个个填
 * 玩法参数：
 *    参数id:  参数编码
 *    参数type: 1数值型，2字符串，3枚举
 *    参数name：  参数名称
 *    鼠标提示：   鼠标移上去时提示的内容
 *    显示说明：说明这个参数的作用和意义，也可以举例
 *    type为1时：
 *        小数位数：   0为整数，大于1为小数位数
 *        范围：[0，100]   一个数组，第0位是最小值，第1位是最大值
 *    type为2时：
 *        字符串长度：限制输入长度，显示长度也可以根据它做参数
 *        过滤规则：  用正则表达式来过滤
 *    type为3时：
 *        枚举内容：[0,1,2,3,4] 一个组，里面是object，全是字符串
 *        
 *  对象定义id:定义的唯一id
 *  对象名称：游戏名/结果名/玩法名
 *  对象类型：游戏/结果/玩法
 *  
 */
public class GameDefine {
	private int gdID;//游戏定义id 
	private String gdName;//游戏类型
	private int  gdType;//定义的类型：1游戏，2玩法，3开奖结果（游戏和玩法都有开奖结果）
	private String note;//说明
	private String bindClass;//绑定的类
	/**
	 * 本json是定义本类的所有可配置参数
	 * 类的参数json定义:
	 * {
	 *    [{"paramID":"tieFlag","paramDefaltValue":"false","paramTip":"是否带和标志",....}]
	 *   ,[{"paramID"}...]
	 *  }
	 *  每个参数定义好它的编辑规则，在创建实例
	 */
	private String param_define;
	private String create_user;//创建人
	private String create_time;//创建时间
}
